import axios from "axios";
import Vue from "vue"
import { Toast } from 'vant';
Vue.use(Toast);

const instance = axios.create({
    baseURL: "http://kumanxuan1.f3322.net:8001",
    timeout: 5000
})

// 请求拦截器
instance.interceptors.request.use(config => {
    // 什么时候执行这里的代码?  
    // 发送请求之前执行这里的代码
    // console.log(1111);
    // console.log("config为:", config);
    // 是一个axios帮我们封装好的关于本次请求详情的一个对象

    // 需要知道的
    // !!!!!!在这个函数中,可以去做一些请求发出去之前的准备工作,例如把token添加请求头

    let token = localStorage.getItem("token");
    if (token) {
        // 把token设置到请求头中
        config.headers["X-Nideshop-Token"] = token
            // 请求头放在请求拦截器中
    }
    // 每一个请求加载的提示展示
    Toast.loading({
        message: '加载中...',
        forbidClick: true,
    });
    // 需要返回config才能成功发出请求
    return config
}, err => {
    return Promise.reject(err)
})

// 响应拦截器
instance.interceptors.response.use(res => {
    // 什么时候执行这里的代码？？ 接收到响应之后，组件中then方法执行之前执行这里的代码

    // 统一管理错误提示
    // 判断res.errno是不是不为0，如果不为0，  console.log(res.errmsg);
    let data = res.data
    if (data.errno !== 0) {
        console.log("响应拦截器中：", data.errmsg || "网络出错");
    }
    // 手动清除加载提示框
    Toast.clear();
    // console.log(22);
    // console.log("响应拦截器的res", res);
    return res.data
}, err => {
    return Promise.reject(err)
})




export default instance